/*
 * @lc app=leetcode.cn id=350 lang=javascript
 *
 * [350] 两个数组的交集 II
 */

// @lc code=start
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersect = function(nums1, nums2) {
    if (nums1.length > nums2.length) {
        return intersect(nums2, nums1);
    }

    let map = new Map();
    for (let i = 0; i < nums1.length; i++) {
        map.set(nums1[i], map.get(nums1[i]) ? map.get(nums1[i]) + 1 : 1);
    }

    const res = [];
    for (let i = 0; i < nums2.length; i++) {
        if (map.has(nums2[i]) && map.get(nums2[i]) > 0) {
            res.push(nums2[i]);
            map.set(nums2[i], map.get(nums2[i])-1);
        }
    }
    return res;
};
// @lc code=end

